1. Field of the Invention
The present invention generally relates to microprocessors and computer systems, and more particularly to a method of verifying the design of a microprocessor or computer system at different hierarchical levels (simulation environments).
2. Description of the Related Art
Integrated circuits are used for a wide variety of electronic applications, from simple devices such as wristwatches, to the most complicated microprocessors. High-performance computer systems typically use multiple microprocessors to carry out the various program instructions embodied in computer programs such as software applications and operating systems. In a state-of-the-art computer system, these microprocessors interface with an ever-growing collection of equally complicated circuits such as memory devices, input/output (I/O) devices, accelerators, controllers and adaptors.
It is important to ensure that a computer system (or subsystem) design is going to work properly before proceeding with fabrication preparation for the integrated circuit devices, and their assembly into the finished system. A variety of tests can be performed to evaluate the design, but simulation remains the dominant strategy for functionally verifying high-end computer systems. A design-under-test is driven by vectors of inputs, and states encountered while walking through the sequence are checked for properties of correctness. This process is often performed by software simulation tools using different programming languages created for electronic design automation, including Verilog, VHDL and TDML.
Verification of a microprocessor or computer system can involve creating many small “unit” environments which are stitched together to create larger environments. The smaller environments require software drivers to generate traffic into hardware interfaces which would normally be driven by neighboring unit hardware. In larger environments, those drivers are replaced with real hardware, and new drivers are then created which stimulate the larger environment interfaces, and stimulate all of the many units contained in that environment. One example of this simulation environment progression is illustrated in FIGS. 1A and 1B. FIG. 1A shows a generalized unit environment 2 for a microprocessor or system component referred to as Unit A. The simulation environment uses a driver 4 adapted to the particular function of Unit A which is used to stimulate (irritate) the simulated Unit A 6 as represented in a hardware description language such as VHDL. In FIG. 1B, the simulation environment has progressed to an element environment 8 having three simulated units, including the same Unit A VHDL 6, and two other units, Unit B VHDL 14, and Unit C VHDL 16. An element driver 10 is adapted to the particular function of the subject element, and stimulates all three unit models 6, 12 and 14.